import fitz  # PyMuPDF库
import tempfile  # 用于创建临时文件
import os
from PyPDF2 import PdfWriter, PdfReader  # 用于处理PyPDF2页面
from config import Config

def is_ocr_page(pypdf2_page):
    """
    判断页面是否为OCR识别页面（适配PyPDF2的PageObject）
    参数: pypdf2_page - PyPDF2的PageObject对象
    返回: 布尔值 - True表示是OCR识别页面，False表示不是
    """
    # 步骤1：将PyPDF2的页面对象转换为PyMuPDF可读取的临时PDF
    try:
        # 创建临时PDF文件（只包含当前页面）
        with tempfile.NamedTemporaryFile(suffix=".pdf", delete=False) as tmp_file:
            tmp_path = tmp_file.name
            
            # 将PyPDF2页面写入临时文件
            writer = PdfWriter()
            writer.add_page(pypdf2_page)
            with open(tmp_path, "wb") as f:
                writer.write(f)
        
        # 步骤2：用PyMuPDF打开临时PDF，获取对应的页面
        with fitz.open(tmp_path) as pdf:
            if len(pdf) == 0:
                return False  # 临时文件创建失败，无法处理
            page = pdf[0]  # 获取临时PDF的第一页（即传入的页面）
            
            # 步骤3：用PyMuPDF处理页面（原有逻辑）
            images = page.get_images(full=True)
            if not images:
                return False  # 无图像，不是OCR页面
            
            # 计算最大图像尺寸
            max_size = 0
            for img in images:
                width, height = img[2], img[3]
                current_size = width * height
                if current_size > max_size:
                    max_size = current_size
            
            # 超过阈值则视为OCR处理页面
            return max_size > Config.SIZE_THRESHOLD
    
    finally:
        # 清理临时文件（无论是否出错都删除）
        if os.path.exists(tmp_path):
            os.remove(tmp_path)
    